package com.example.common.codeFactory;

import com.example.common.codeFactory.entity.CodeGenerateType;

/**
 * 编号生成器策略模板
 */
public interface CodeGenerateStrategy {

    /**
     * 是否支持此策略
     *
     * @return
     * @param codeGenerateType
     */
    boolean isSupport(CodeGenerateType codeGenerateType);

    /**
     * 生成编号
     *
     * @return
     */
    String generateCode(String prefix, int id);

    /**
     * 优先级，可用于多级策略下的同级优先级比较，目前只考虑到二级，实际当一级用也差不多
     *
     * @return
     */
    int getPriority();

    /**
     * 生成器名称
     *
     * @return
     */
    String getName();
}
